package com.winshare.saleAssistant.mapper;

import com.winshare.saleAssistant.domain.dto.resp.StaffCurrentInfoDTO;
import com.winshare.saleAssistant.domain.entity.AppDO;
import com.winshare.saleAssistant.domain.entity.MenuDO;
import com.winshare.saleAssistant.domain.entity.StaffDO;
import com.winshare.saleAssistant.domain.query.StaffExcelExportQuery;
import com.winshare.saleAssistant.domain.query.StaffQuery;
import com.winshare.saleAssistant.domain.dto.req.*;
import com.winshare.saleAssistant.domain.dto.resp.StaffRespDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
import org.mapstruct.factory.Mappers;

import java.util.List;

@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface StaffMapStruct {

    StaffMapStruct INSTANCE = Mappers.getMapper(StaffMapStruct.class);
    
    StaffDO fromStaffCreateDTO(StaffCreateDTO staffCreateDTO);

    StaffDO fromStaffUpdateDTO(StaffUpdateDTO staffUpdateDTO);

    StaffDO fromStaffDeleteDTO(StaffDeleteDTO staffDeleteDTO);

    StaffQuery fromStaffQueryDTO(StaffQueryDTO staffQueryDTO);

    StaffRespDTO toStaffRespDTO(StaffDO staffDO);

    List<StaffRespDTO> toStaffRespDTOList(List<StaffDO> staffDOList);

    StaffDO fromLoginDTO(LoginDTO loginDTO);

    StaffDO fromGetCaptchaCodeDTO(GetCaptchaCodeDTO getCaptchaCodeDTO);

    StaffDO fromCaptchaReqDTO(CaptchaReqDTO captchaReqDTO);

    StaffDO fromLoginByPhoneDTO(LoginByPhoneDTO loginByPhoneDTO);

    MenuDO fromMenuDTO(MenuDO menuDO);

    List<MenuDTO> fromMenuDOList(List<MenuDO> menuDOList);

    StaffDO fromStudyModelDTO(StudyModelDTO studyModelDTO);

    StaffDO fromSubscribeModelDTO(SubscribeModelDTO subscribeModelDTO);

    StaffDO fromLoginByOpenIdDTO(LoginByOpenIdDTO loginByOpenIdDTO);

    StaffDO fromBaseIdDTO(BaseIdDTO baseIdDTO);

    AppDTO fromAppDO(AppDO appDO);

    List<AppDTO> fromAppDOList(List<AppDO> appDOList);

    StaffCurrentInfoDTO fromStaffDO(StaffDO staffDOInSql);

    StaffDO fromSetProductReadPasswordDTO(SetProductReadPasswordDTO setProductReadPasswordDTO);

    StaffCreateDTO fromStaffExcelImportData(StaffExcelImportData data);

    StaffExcelExportQuery fromStaffExcelExportDTO(StaffExcelExportDTO staffExcelExportDTO);
}
